本文是研究员 decoder(昵称)撰写的博客,通过获取 iPhone 的 NT AUTHORITY\SYSTEM 的真实案例说明如何利用 Printcofig dll。奇安信代码卫士编译如下:前一段时间,我和我的“业务搭档”@padovah4ck正在寻找可通过硬链接实施利用的权限文件操作。某一刻,目录c:\programdata\apple\lockdown 吸引了我们的注意力。该文件夹由iTunes软件安装的“AppleMobile Device Service”所使用。该服务以本地系统权限运行,负责处理通过 USB 端口和苹果设备(iPhone、iPad 等)开展的通信。
每次插入新的设备时,驱动就会在目录中以 <UDID>.PLIST 的格式写一个“pairing certificate”文件,其中 UDID 是苹果设备的通用ID。于是插入我们的苹果设备。之后会生成一个“pairingcertificate”,而文件的许可设置如下:
但有意思的部分来了。如果你拔掉设备并再次插入,就会发生一些“魔法”,导致用户完全控制该文件:
我们可以通过Sysinternals 的“procmon”工具观察到这种“奇怪”行为:
提升后的上下文 (SYSTEM)调用SetSecurity,并将授予用户对资源的完整控制权。问题是,这一操作是可被利用的吗?标准的Windows 用户无需特殊权限就能创建这种类型的链接,我们使用 Forshaw 的工具进行管理。那么,何不在这个文件上设置一个“原生硬链接”并将其指向只有系统才能完全控制的资源?这就是我们接下来要做的事情,从<udid>.plist 文件中给位于 System 32 文件夹中的 license.rtf 设置一个硬链接:
现在,我们只需要插入苹果设备就能够修改目标文件的权限:
到此为止,我们已经解决了所有的译文,只需要将目标文件修改为 printcofig.dll 之后通过自己的 dll 进行覆写、开启 XPS 打印任务,最后享受 SYSTEM shell 即可(请读者自行体会这种兴奋)。视频地址:https://www.youtube.com/watch?v=3hEizbfSGUA
需要具备Windows 机器上的用户shell 访问权限。
应该安装iTunes 和Apple Mobile Device Service。我们在最新的 iTunes 版本上测试成功(本文发布时最新版本是12.10.3)。
为了进行测试,需要能够物理访问机器,以便插入苹果设备,但这并非必须条件。在“攻击者场景”下,你可以删除 *.plist 文件,创建指向该目标 dll 的同样的 *.plist 文件并等待设备插件。我们发现有时候设置无需配对设备就能够设置完整权限,但还需进一步调查验证。
2019-09-13:我们将问题告知 product-security@apple.com
2019-09-18:苹果要求重新发送屏幕截图
2019-10-10:苹果表示打算在新版本中修复该问题
2019-10-30:苹果发布 iTunes 12.10.2 但未修复该问题
我们多次试图和苹果沟通该问题,但未获得任何回应
2019-12-09:我们通知苹果称将在12月12日公开该问题(90天的期限截止日)
2019-12-11:苹果发布 iTunes 12.10.3但并未修复该问题
2019-12-12:苹果仍未回复,本文发布。
通用硬链接“滥用”无法在 Windows 未来版本中起作用。在最新的“Insider”预览版中,微软已经增加了一些额外检查,因此如果你不具备对该目标文件的写入权限,如果尝试创建硬链接则会收到拒绝访问的错误提示信息。
https://decoder.cloud/2019/12/12/from-iphone-to-nt-authoritysystem/
本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。